]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
screenShield: Move background to Unlock Dialog
authorGeorges Basile Stavracas Neto <georges.stavracas@gmail.com>
Thu, 28 Nov 2019 22:16:55 +0000 (19:16 -0300)
committerFlorian Müllner <florian.muellner@gmail.com>
Mon, 10 Feb 2020 22:30:51 +0000 (22:30 +0000)
In addition to that, remove the ClutterBoxLayout that is set as
the layout manager of the Unlock Dialog, and apply the primary
monitor constraint to the child St.BoxLayout instead.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/872

js/ui/screenShield.js
js/ui/unlockDialog.js

index 98433d01cd525174b95834ffe1eef270ad3103b0..933fa1986e7bd1021499bfc0eee380dac6b453c5 100644 (file)
@@ -4,7 +4,6 @@ const { AccountsService, Clutter, Gio,
         GLib, Graphene, Meta, Shell, St } = imports.gi;
 const Signals = imports.signals;
 
-const Background = imports.ui.background;
 const GnomeSession = imports.misc.gnomeSession;
 const Layout = imports.ui.layout;
 const OVirt = imports.gdm.oVirt;
@@ -76,15 +75,6 @@ var ScreenShield = class {
 
         this._lockScreenGroup.add_actor(this._lockScreenContents);
 
-        this._backgroundGroup = new Clutter.Actor();
-
-        this._lockScreenGroup.add_actor(this._backgroundGroup);
-        this._lockScreenGroup.set_child_below_sibling(this._backgroundGroup, null);
-        this._bgManagers = [];
-
-        this._updateBackgrounds();
-        Main.layoutManager.connect('monitors-changed', this._updateBackgrounds.bind(this));
-
         this._dragAction = new Clutter.GestureAction();
         this._dragAction.connect('gesture-begin', this._onDragBegin.bind(this));
         this._dragAction.connect('gesture-progress', this._onDragMotion.bind(this));
@@ -190,35 +180,6 @@ var ScreenShield = class {
         this._syncInhibitor();
     }
 
-    _createBackground(monitorIndex) {
-        let monitor = Main.layoutManager.monitors[monitorIndex];
-        let widget = new St.Widget({ style_class: 'screen-shield-background',
-                                     x: monitor.x,
-                                     y: monitor.y,
-                                     width: monitor.width,
-                                     height: monitor.height });
-
-        let bgManager = new Background.BackgroundManager({ container: widget,
-                                                           monitorIndex,
-                                                           controlPosition: false,
-                                                           settingsSchema: SCREENSAVER_SCHEMA });
-
-        this._bgManagers.push(bgManager);
-
-        this._backgroundGroup.add_child(widget);
-    }
-
-    _updateBackgrounds() {
-        for (let i = 0; i < this._bgManagers.length; i++)
-            this._bgManagers[i].destroy();
-
-        this._bgManagers = [];
-        this._backgroundGroup.destroy_all_children();
-
-        for (let i = 0; i < Main.layoutManager.monitors.length; i++)
-            this._createBackground(i);
-    }
-
     _liftShield(velocity) {
         if (this._isLocked) {
             if (this._ensureUnlockDialog(true /* allowCancel */))
index 31f0ff26a98c4a5da733136c782ac1d90e1ad106..d853a93b61300ce7e8fcd66d71f95fe7a8e013ff 100644 (file)
@@ -4,6 +4,7 @@
 const { AccountsService, Atk, Clutter, Gdm, Gio,
         GnomeDesktop, GLib, GObject, Meta, Shell, St } = imports.gi;
 
+const Background = imports.ui.background;
 const Layout = imports.ui.layout;
 const Main = imports.ui.main;
 const MessageTray = imports.ui.messageTray;
@@ -13,6 +14,8 @@ const AuthPrompt = imports.gdm.authPrompt;
 // The timeout before going back automatically to the lock screen (in seconds)
 const IDLE_TIMEOUT = 2 * 60;
 
+const SCREENSAVER_SCHEMA = 'org.gnome.desktop.screensaver';
+
 const SUMMARY_ICON_SIZE = 48;
 
 var NotificationsBox = GObject.registerClass({
@@ -333,13 +336,21 @@ var UnlockDialog = GObject.registerClass({
         super._init({
             accessible_role: Atk.Role.WINDOW,
             style_class: 'login-dialog',
-            layout_manager: new Clutter.BoxLayout(),
             visible: false,
         });
 
-        this.add_constraint(new Layout.MonitorConstraint({ primary: true }));
         parentActor.add_child(this);
 
+        // Background
+        this._backgroundGroup = new Clutter.Actor();
+        this.add_child(this._backgroundGroup);
+
+        this._bgManagers = [];
+
+        this._updateBackgrounds();
+        this._monitorsChangedId =
+            Main.layoutManager.connect('monitors-changed', this._updateBackgrounds.bind(this));
+
         this._userManager = AccountsService.UserManager.get_default();
         this._userName = GLib.get_user_name();
         this._user = this._userManager.get_user(this._userName);
@@ -350,6 +361,7 @@ var UnlockDialog = GObject.registerClass({
                                              x_expand: true,
                                              y_expand: true });
         this.add_child(this._promptBox);
+        this._promptBox.add_constraint(new Layout.MonitorConstraint({ primary: true }));
 
         this._clock = new Clock();
         this._promptBox.add_child(this._clock);
@@ -394,6 +406,39 @@ var UnlockDialog = GObject.registerClass({
         this.connect('destroy', this._onDestroy.bind(this));
     }
 
+    _createBackground(monitorIndex) {
+        let monitor = Main.layoutManager.monitors[monitorIndex];
+        let widget = new St.Widget({
+            style_class: 'screen-shield-background',
+            x: monitor.x,
+            y: monitor.y,
+            width: monitor.width,
+            height: monitor.height,
+        });
+
+        let bgManager = new Background.BackgroundManager({
+            container: widget,
+            monitorIndex,
+            controlPosition: false,
+            settingsSchema: SCREENSAVER_SCHEMA,
+        });
+
+        this._bgManagers.push(bgManager);
+
+        this._backgroundGroup.add_child(widget);
+    }
+
+    _updateBackgrounds() {
+        for (let i = 0; i < this._bgManagers.length; i++)
+            this._bgManagers[i].destroy();
+
+        this._bgManagers = [];
+        this._backgroundGroup.destroy_all_children();
+
+        for (let i = 0; i < Main.layoutManager.monitors.length; i++)
+            this._createBackground(i);
+    }
+
     _updateSensitivity(sensitive) {
         this._authPrompt.updateSensitivity(sensitive);
 
@@ -437,6 +482,11 @@ var UnlockDialog = GObject.registerClass({
             this._idleMonitor.remove_watch(this._idleWatchId);
             this._idleWatchId = 0;
         }
+
+        if (this._monitorsChangedId) {
+            Main.layoutManager.disconnect(this._monitorsChangedId);
+            delete this._monitorsChangedId;
+        }
     }
 
     cancel() {